Moniprosessointi tarkoittaa kahden tai useamman suorittimen käyttöä yhdessä tietokoneessa siten, että jokainen suoritin voi jakaa samaa muistiavaruutta.[1] Suorittimet voivat käsitellä samaa tai eri ohjelmaa samanaikaisesti.[2]
Termillä viitataan järjestelmän tukea useammalle kuin yhdelle suorittimelle ja kykyä jakaa tehtäviä näille.[3] Useamman kuin yhden prosessorin käyttö samassa tietokoneessa vaatii synkronointituen prosessorilta, jollainen on esimerkiksi Motorola 68020 prosessorin RMC-pinni.[4][5] Moniprosessointi on merkittävä muutos tietokoneen arkkitehtuuriin, joka vaatii synkronointituen tiedon eheyden varmistamiseksi.[6]
Moniprosessointi eroaa klusterista mm. siten, että tietokoneen jokainen suoritin pääsee samalla tavoin suoraan käsiksi laitteisiin (jaettu muistiavaruus ja resurssit). Klusterissa on käytössä hajautettu muistiarkkitehtuuri.[7] Moniydinprosessoreissa prosessorit (ytimet) voivat keskustella keskenään jaetun välimuistin kautta kun taas suuren mittakaavan supertietokoneet tarvitsevat koordinointia tietojen reitittämiseen.[8]
Eräissä yhteyksissä asiaan viitataan termillä symmetrinen moniprosessointi (engl. Symmetric multiprocessing, SMP), jolloin käyttöjärjestelmän kerneli voidaan suorittaa millä tahansa tietokoneessa olevalla suorittimella yhtäläisesti.[7] Tämä eroaa klusterista, jossa jokaisella solmulla (node) on oltava käyttöjärjestelmän ytimestä oma kopio suoritettavana.
Epäsymmetrinen tai asymmetrinen moniprosessointi (engl. Asymmetric multiprocessing, AMP) on symmetristä edeltävä ja toisinaan käytössä oleva edullisempi ratkaisu. Ratkaisua voidaan käyttää esimerkiksi sulautetuissa järjestelmissä, joissa suoritin voidaan varata tiettyyn tarkoitukseen suunnitteluvaiheessa eikä tehtäviä jaeta tasamäärin jokaiselle suorittimelle. Tällöin suoritin tai joukko suorittimia eristetään tiettyyn käyttöön (järjestelmän osiointi).[9][10]
Rajattu moniprosessointi (engl. Bound multiprocessing, BMP) on QNX:n käyttämä termi tapaukseen, jossa järjestelmä toimii kuten symmetrinen, mutta kehittäjä tai ylläpitäjä rajoittaa suorituksen tietyyn suorittimeen estäen vuoronnusta vaihtamasta käytettävää suoritinta tehden siitä asymmetrisen.[11][12] Linuxissa ja Windowsissa suoritusta voidaan rajata tietyille suorittimille asettamalla affinity-arvo halutuille säikeille.[13][14]
Moniprosessointi soveltuu moniajoa käyttävälle käyttöjärjestelmälle koska se mahdollistaa aidon rinnakkaisuuden.
Suurissa moniprosessoritietokoneissa kuten supertietokoneissa muistin yhtenäinen käsittely on haastavaa ja näissä on käytetty muistiarkkitehtuureja kuten COMA ja NUMA.